SAS 您所在的位置:网站首页 sas 过程步 汇总 SAS

SAS

2023-12-13 03:31| 来源: 网络整理| 查看: 265

proc sort排序

基本格式:

proc sort data= (out=) (nodupkey); by (descending) (descending) ……; run;

proc sort过程将数据集dataset按照varname的值进行升序或者降序,输出为数据集newset,关键词nodupkey表示去掉重复值(需要注意的是,nodupkey根据by变量剔重); by语句是指按照varname1进行排序,值相同时按照varname2进行排序,以此类推; descending即降序排列,默认ascending升序;

补充

关键词nodupkey 关键词nodupkey表示删除具有相同by变量的观测,若指定dupout=选项,则sas将删除的观测输出到指定的数据集中

proc sort data=a out=b nodupkey dupout=c; by name age; run;

该proc步表示将数据集a按照姓名和年龄排序,并删除具有相同姓名和年龄的观测,把未删除且排序后的数据集输出到数据集b中,把删除的观测输出到数据集c中。

更改字符数据的排序顺序 z/OS 操作环境默认的排序序列是EBCDIC,其他大多数操作环境的默认排序序列是ASCII。字符数据从低到高的基本排序顺序为:

排序序列ASCII空格数字大写字母小写字母EBCDIC空格小写字母大写字母数字

语义排序 默认情况下,大小写字母是分开排序的(如上表所示)。若想生成更直观的排序,可以使用“SORTSEQ=LINGUISTIC”选项带有的“STRENGTH=PRIMARY”子选项,可忽略大小写。

proc sort data=a out=b sortseq=linguistic(strength=primary);

当对字符数据中的数字进行排序时,默认情况下“10”会在“2”的前面,可以使用子选项“NUMERIC_COLLATION=0N”,将数字等同于数值进行排序处理。

proc sort data=a out=b sortseq=linguistic(numeric_collation=on); proc transpose转置

长表转宽表,基本格式

proc transpose data= (out= name= label=); by ……; var ; id ; idlabel ; run;

name:用来定义var的新变量 的变量名(显示在表格中); label:用来定义var的标签的新变量 的变量名(显示在表格中); id:即取id中的值 生成新的变量(显示在表格中); idlabel:即取idlabel中的值 生成新变量的标签(不显示在表格中); var:var的值作为 id中的值生成新变量 的值(显示在表格中) by:被保留的变量,控制变量的先后顺序,变量需要提前被sort,notsorted 指允许不排序;

/*长表vs转宽表vsa */ proc sort data=vs; by subjid avisit avisitn; run; proc transpose data=vs out=vsa name=a label=b; /*out指定输出数据集,若无指定,自动将转制后的数据集命名为data1、data2...不会覆盖原有数据集*/ /*name,label 存储 var 变量值的变量名和标签*/ by subjid avisit avisitn; /*仍然需要保留为变量,包含在转置数据集中,但他们本身并不转置*/ var aval; /*需要转置其值的变量 的变量值会成为Id语句生成的新变量的值; 在转置后的数据集中作为值的变量*/ id paramcd; /*ID变量的值会变成新变量名;转置后按照值生成多个变量的变量*/ idlabel param; /*idlabel变量的值会变成新变量的标签*/ run;

在这里插入图片描述 宽表转长表,基本格式

proc transpose data= out= prefix= name= label=); by ……; var ……; run;

prefix:为var1、var2的值指定新的变量名前缀; name:为存储var1、var2变量名的新变量; by:by1、by2变量可复制成多条观测,需要提前sort(注意,sort的by语句的变量是哪些,此处的变量就是哪些); var:var1、var2指定需要转变的变量名

/*宽表vs1转长表*vsb/ proc sort data=vs1; by subjid avisitn avisit; run; proc transpose data=vs1 out=vsb /*prefix=st*/ name=param label=paramcd; /*Name: 为存储 变量名的新变量*/ by subjid avisitn avisit; var weight height; /*由变量变为观测值,其变量下的值转置,由宽转长*/ run;

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有